﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Senac.ProjetoIntegrador.DAO.Context;
using Senac.ProjetoIntegrador.Model;
using System.Data.Entity;

namespace Senac.ProjetoIntegrador.DAO
{
    public class AtividadeDAO
    {
        public void Create(Atividade Atividade)
        {
            using (ProjetoIntegradorContext context = new ProjetoIntegradorContext())
            {
                context.Atividade.Add(Atividade);
                context.SaveChanges();
            }
        }

        public void UpdateAtividade(Atividade atividade)
        { 
            using(ProjetoIntegradorContext context = new ProjetoIntegradorContext())
            {
                context.Atividade.Attach(atividade);

                var entry = context.Entry(atividade);

                entry.State = EntityState.Modified;

                entry.Property(e => e.cod_Atividade).IsModified = false;
                entry.Property(e => e.ind_Ativo).IsModified = false;
                entry.Property(e => e.desc_Titulo).IsModified = false;
                
                context.SaveChanges();
            }
        }

        public void CreateAtividade(Atividade item)
        { 
            using(ProjetoIntegradorContext context = new ProjetoIntegradorContext())
            {
                context.Atividade.Add(item);
                context.SaveChanges();
            }
        }

        public Atividade getAtividadeById(int id)
        {
            Atividade result;

            using(ProjetoIntegradorContext context = new ProjetoIntegradorContext())
            {
                context.Configuration.LazyLoadingEnabled = false;

                var query = from x in context.Atividade
                            where x.cod_Atividade == id
                            select x;

                result = query.Single();

                context.Entry(result).Collection(e => e.Perguntas).Load();

                
            }
            return result;

        }
    }
}
